/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.i18n; import javax.swing.event.*; import java.util.Vector; import java.util.Enumeration; import org.netbeans.modules.form.FormDesignValue; import org.netbeans.modules.form.RADComponent; import org.netbeans.modules.properties.ResourceBundleString; import org.netbeans.modules.properties.BundleStructure; import org.netbeans.modules.properties.PropertiesFileEntry; import org.netbeans.modules.properties.PropertiesStructure; import org.netbeans.modules.properties.PropertiesDataObject; import org.netbeans.modules.properties.PropertyBundleEvent; import org.netbeans.modules.properties.PropertyBundleListener; import org.netbeans.modules.properties.WeakListenerPropertyBundle; /** * * @author pjiricka * @version */ public class ResourceBundleStringForm extends ResourceBundleString implements FormDesignValue.Listener { static final long serialVersionUID =-5754505794855958684L; public ResourceBundleStringForm() { super(); } public ResourceBundleStringForm(ResourceBundleString source) { super(source); } public Object getDesignValue (RADComponent radComponent) { String value = getPropertyValue(); if (value == null) return IGNORED_VALUE; return value; } public void setResourceBundle(PropertiesDataObject resourceBundle) { // remove myself from the old listener super.setResourceBundle(resourceBundle); if (getResourceBundle() != null) { BundleStructure bs = getResourceBundle().getBundleStructure(); if (bs != null) { bundList = new PropertyBundleListener() { public void bundleChanged(PropertyBundleEvent evt) { switch (evt.getChangeType()) { case PropertyBundleEvent.CHANGE_STRUCT: fireChange(); break; case PropertyBundleEvent.CHANGE_ALL: fireChange(); break; case PropertyBundleEvent.CHANGE_FILE: if (fileMatches(evt.getEntryName())) fireChange(); break; case PropertyBundleEvent.CHANGE_ITEM: if (fileMatches(evt.getEntryName()) && evt.getItemName().equals(getKey())) fireChange(); break; } } }; bs.addPropertyBundleListener(new WeakListenerPropertyBundle(bundList)); } } fireChange(); } private boolean fileMatches(String entryName) { // pending - locale sensitive ? return (getResourceBundle().getPrimaryFile().getName().equals(entryName)); } public void setKey(String key) { super.setKey(key); fireChange(); } protected void fireChange() { if (listvec != null) { Vector vecclone = (Vector)listvec.clone(); Enumeration enum = vecclone.elements(); ChangeEvent evt = new ChangeEvent(this); while(enum.hasMoreElements()) { ChangeListener elist = (ChangeListener)enum.nextElement(); elist.stateChanged(evt); } } } public void addChangeListener (ChangeListener listener) { if (listvec == null) listvec = new Vector(1); listvec.add(listener); } public void removeChangeListener (ChangeListener listener) { if (listvec != null) listvec.remove(listener); } private transient PropertyBundleListener bundList; /** * @associates ChangeListener */ private transient Vector listvec; } /* * <<Log>> * 7 Gandalf 1.6 11/27/99 Patrik Knakal * 6 Gandalf 1.5 10/25/99 Petr Jiricka Various bugfixes * 5 Gandalf 1.4 10/23/99 Ian Formanek NO SEMANTIC CHANGE - Sun * Microsystems Copyright in File Comment * 4 Gandalf 1.3 8/17/99 Petr Jiricka Serialization * 3 Gandalf 1.2 8/2/99 Petr Jiricka * 2 Gandalf 1.1 8/1/99 Petr Jiricka * 1 Gandalf 1.0 7/29/99 Petr Jiricka * $ */